home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 125
/
Freelog_MarsAvril2015_No125.iso
/
Musique
/
Quod Libet
/
quodlibet-3.3.0-installer.exe
/
bin
/
quodlibet
/
ext
/
events
/
themeswitcher.pyc
(
.txt
)
< prev
next >
Wrap
Python Compiled Bytecode
|
2014-12-31
|
7KB
|
177 lines
# Source Generated with Decompyle++
# File: in.pyc (Python 2.7)
import warnings
import os
from gi.repository import Gtk
from quodlibet import qltk
from quodlibet import config
from quodlibet import const
from quodlibet.qltk.ccb import ConfigCheckButton
from quodlibet.plugins.events import EventPlugin
def has_header_bar_prop():
'''if gtk is recent enough to have the property'''
settings = Gtk.Settings.get_default()
return hasattr(settings.props, 'gtk_dialogs_use_header')
def set_header_bar(value):
if not has_header_bar_prop():
return None
settings = None.Settings.get_default()
settings.set_property('gtk-dialogs-use-header', value)
def get_header_bar():
if not has_header_bar_prop():
return False
settings = None.Settings.get_default()
return settings.get_property('gtk-dialogs-use-header')
class ThemeSwitcher(EventPlugin):
PLUGIN_ID = 'Theme Switcher'
PLUGIN_NAME = _('Theme Switcher')
PLUGIN_DESC = _('Change the active GTK+ theme.')
__enabled = False
__defaults = False
CONFIG_THEME = PLUGIN_ID + '_theme'
CONFIG_DARK = PLUGIN_ID + '_prefer_dark'
CONFIG_HEADER_BAR = PLUGIN_ID + '_prefer_header_bar'
def __init_defaults(self):
if self._ThemeSwitcher__defaults:
return None
self._ThemeSwitcher__defaults = None
settings = Gtk.Settings.get_default()
self._ThemeSwitcher__default_theme = settings.get_property('gtk-theme-name')
self._ThemeSwitcher__default_dark = settings.get_property('gtk-application-prefer-dark-theme')
self._ThemeSwitcher__default_header_bar = get_header_bar()
def PluginPreferences(self, *args):
self._ThemeSwitcher__init_defaults()
hb = Gtk.HBox(spacing = 6)
label = Gtk.Label(label = _('_Theme:'))
combo = Gtk.ComboBoxText()
theme = config.get('plugins', self.CONFIG_THEME, None)
combo.append_text(_('Default Theme'))
themes = self._ThemeSwitcher__get_themes()
select = 0
for i, name in enumerate(sorted(themes)):
combo.append_text(name)
if name == theme:
select = i + 1
continue
combo.set_active(select)
combo.connect('changed', self._ThemeSwitcher__changed)
dark_button = ConfigCheckButton(_('Prefer dark theme version'), 'plugins', self.CONFIG_DARK, populate = True, default = self._ThemeSwitcher__get_dark())
def dark_cb(button):
self._ThemeSwitcher__set_dark(button.get_active())
dark_button.connect('toggled', dark_cb)
hb_button = ConfigCheckButton(_('Use header bars'), 'plugins', self.CONFIG_HEADER_BAR, populate = True, default = self._ThemeSwitcher__get_header_bar())
def hb_cb(button):
self._ThemeSwitcher__set_header_bar(button.get_active())
hb_button.connect('toggled', hb_cb)
label.set_mnemonic_widget(combo)
label.set_use_underline(True)
hb.pack_start(label, False, True, 0)
hb.pack_start(combo, False, True, 0)
vbox = Gtk.VBox(spacing = 6)
vbox.pack_start(hb, False, True, 0)
vbox.pack_start(dark_button, False, True, 0)
vbox.pack_start(hb_button, False, True, 0)
return qltk.Frame(_('Preferences'), child = vbox)
def __changed(self, combo):
index = combo.get_active()
if not index or combo.get_active_text():
pass
name = ''
config.set('plugins', self.CONFIG_THEME, name)
self._ThemeSwitcher__set_theme(name)
def __get_themes(self):
with warnings.catch_warnings():
warnings.simplefilter('ignore')
theme_dir = Gtk.rc_get_theme_dir()
theme_dirs = [
theme_dir,
os.path.join(const.HOME, '.themes')]
themes = set()
for theme_dir in theme_dirs:
try:
subdirs = os.listdir(theme_dir)
except OSError:
continue
for dir_ in subdirs:
gtk_dir = os.path.join(theme_dir, dir_, 'gtk-3.0')
if os.path.isdir(gtk_dir):
themes.add(dir_)
continue
return themes
def __set_theme(self, name):
if not self._ThemeSwitcher__enabled:
return None
settings = None.Settings.get_default()
themes = self._ThemeSwitcher__get_themes()
if not name in themes or name:
pass
name = self._ThemeSwitcher__default_theme
settings.set_property('gtk-theme-name', name)
def __set_dark(self, value):
if not self._ThemeSwitcher__enabled:
return None
settings = None.Settings.get_default()
if value is None:
value = self._ThemeSwitcher__default_dark
settings.set_property('gtk-application-prefer-dark-theme', value)
def __set_header_bar(self, value):
if not self._ThemeSwitcher__enabled:
return None
if None is None:
value = self._ThemeSwitcher__default_header_bar
set_header_bar(value)
def __get_header_bar(self):
return config.getboolean('plugins', self.CONFIG_HEADER_BAR, self._ThemeSwitcher__default_header_bar)
def __get_dark(self):
return config.getboolean('plugins', self.CONFIG_DARK, self._ThemeSwitcher__default_dark)
def enabled(self):
self._ThemeSwitcher__enabled = True
self._ThemeSwitcher__init_defaults()
theme = config.get('plugins', self.CONFIG_THEME, None)
self._ThemeSwitcher__set_theme(theme)
self._ThemeSwitcher__set_dark(self._ThemeSwitcher__get_dark())
self._ThemeSwitcher__set_header_bar(self._ThemeSwitcher__get_header_bar())
def disabled(self):
self._ThemeSwitcher__set_theme(None)
self._ThemeSwitcher__set_dark(None)
self._ThemeSwitcher__set_header_bar(None)
self._ThemeSwitcher__enabled = False